package cn.tedu.oa.sys.service.impl;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import cn.tedu.oa.common.util.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.tedu.oa.common.exception.ServiceException;
import cn.tedu.oa.common.service.impl.BaseServiceImpl;
import cn.tedu.oa.sys.dao.ConfigDao;
import cn.tedu.oa.sys.entity.Config;
import cn.tedu.oa.sys.service.ConfigService;

@Service
public class ConfigServiceImpl extends BaseServiceImpl<Config> implements ConfigService{
	
	@Autowired
	private ConfigDao configDao;

	@Override
	public void add(Config config) {
		if(config==null){
			throw new ServiceException("添加失败：配置信息为空");
		}
		if(config.getName()==null){
			throw new ServiceException("添加失败：配置名为空");
		}
		if(config.getValue()==null){
			throw new ServiceException("添加失败：配置值为空");
		}
		if(config.getDesc()==null){
			throw new ServiceException("添加失败：配置描述为空");
		}
		config.setIsdel(0);
		config.setAddTime(new Date());
		config.setAddUser(ShiroUtils.getPrincipal().getName());
		config.setRemark("add");
		configDao.add(config);
	}

	@Override
	public void delete(Serializable id) {
		if(id==null||(Integer)id<1){
			throw new IllegalArgumentException("参数不合法，请联系运维人员");
		}
		Config config=configDao.get(id);
		if(config==null){
			throw new ServiceException("删除失败：该记录可能已经不存在");
		}
		configDao.delete(id);
	}

	@Override
	public void update(Config config) {
		if(config==null){
			throw new ServiceException("修改失败：配置信息为空");
		}
		if(config.getName()==null){
			throw new ServiceException("修改失败：配置名为空");
		}
		if(config.getValue()==null){
			throw new ServiceException("修改失败：配置值为空");
		}
		if(config.getDesc()==null){
			throw new ServiceException("修改失败：配置描述为空");
		}
		config.setUpdateTime(new Date());
		config.setUpdateUser(ShiroUtils.getPrincipal().getName());
		Config oldConfig=configDao.get(config.getId());
		config.setRemark(oldConfig.getRemark()+",update");
		configDao.update(config);
	}

	@Override
	public List<Config> getConfigPageList(String criteria, Integer pageNo, Integer pageSize) {
		if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) {
			throw new IllegalArgumentException("参数不合法，请联系运维人员");
		}
		int startIndex = (pageNo - 1) * pageSize + 1;
		int endIndex = startIndex + pageSize - 1;
		List<Config> list = configDao.getConfigPagerList(criteria, startIndex, endIndex);
		if (list == null) {
			throw new ServiceException("没有查询到数据");
		}
		return list;
	}


}
